import unittest
import requests
from parameterized import parameterized

from api.api01_ihrm_login import ApiIhrmLogin
from config import BASE_DIR
from utils.read_json_data import read_json_data


class TestIHRMLogin(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        # cls.session = requests.Session()
        cls.api_ihrm_login = ApiIhrmLogin()

    # 针对一个接口，只写一个测试方法。用一份测试数据文件，管理各个测试用例的测试数据。
    def test01_login_success(self):
        login_json_data = {"mobile": "13800000002", "password": "123456"}
        resp = self.api_ihrm_login.login(login_json_data)
        self.assertEqual(200, resp.status_code)
        self.assertEqual(True, resp.json().get("success"))
        self.assertEqual(10000, resp.json().get("code"))
        self.assertIn("操作成功", resp.json().get("message"))

    # 手机号为空
    def test02_login_phone_none(self):
        login_json_data = {"mobile": None, "password": "123456"}
        resp = self.api_ihrm_login.login(login_json_data)
        self.assertEqual(200, resp.status_code)
        self.assertEqual(False, resp.json().get("success"))
        self.assertEqual(20001, resp.json().get("code"))
        self.assertIn("用户名或密码错误", resp.json().get("message"))

    # 密码错误
    def test02_login_pwd_err(self):
        login_json_data = {"mobile": "13800000002", "password": "111111"}
        resp = self.api_ihrm_login.login(login_json_data)

        self.assertEqual(200, resp.status_code)
        self.assertEqual(False, resp.json().get("success"))
        self.assertEqual(20001, resp.json().get("code"))
        self.assertIn("用户名或密码错误", resp.json().get("message"))

class TestIHRMLoginPlus(unittest.TestCase):
    param_data = []
    @classmethod
    def setUpClass(cls):
        # 加载测试数据
        cls.param_data = read_json_data(BASE_DIR+"/data/ihrm_login.json")
        cls.api_ihrm_login = ApiIhrmLogin()


    @parameterized.expand(param_data)
    def test01_login(self):
        resp = self.api_ihrm_login.login(self.param_data)
        self.assertEqual(200, resp.status_code)
        self.assertEqual(True, resp.json().get("success"))
        self.assertEqual(10000, resp.json().get("code"))
        self.assertIn("操作成功", resp.json().get("message"))
        print(resp.text)


